package com.intfocus.yonghuitest.view;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;

import com.intfocus.yonghuitest.R;

/**
 * Created by Liurl on 2016/9/2.
 */
public class CircleImageView extends AppCompatImageView {
	private Paint paint ;

	public CircleImageView(Context context) {
		this(context,null);
	}

	public CircleImageView(Context context, AttributeSet attrs) {
		this(context, attrs,0);
	}

	public CircleImageView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		paint = new Paint();
	}

	/*
	 * 重写onDraw方法绘制圆形图片
	 */
	@Override
	protected void onDraw(Canvas canvas) {
		try {
			Drawable drawable = getDrawable();
			if (null != drawable) {
				Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
				Bitmap b = getCircleBitmap(bitmap, 14);
				final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());
				final Rect rectDest = new Rect(0,0,getWidth(),getHeight());
				paint.reset();
				canvas.drawBitmap(b, rectSrc, rectDest, paint);
			} else {
				super.onDraw(canvas);
			}
		} catch (Exception e){
			//e
		}
	}

	/*
	 * 获取圆形图片
	 */
	private Bitmap getCircleBitmap(Bitmap bitmap, int pixels) {
		try {
			Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
					bitmap.getHeight(), Bitmap.Config.ARGB_8888);
			Canvas canvas = new Canvas(output);

			final int color = 0xff424242;

			final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
			paint.setAntiAlias(true);
			canvas.drawARGB(0, 0, 0, 0);
			paint.setColor(color);
			int x = bitmap.getWidth();

			canvas.drawCircle(x / 2, x / 2, x / 2, paint);
			paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
			canvas.drawBitmap(bitmap, rect, rect, paint);
			return output;
		} catch (Exception e){
			return BitmapFactory.decodeResource(getResources(), R.drawable.login_logo);
		}

	}
}
